# -*- coding: utf-8 -*-
# @Time : 2022-05-25 14:39
# @Author : Z
# @Function : 正则表达式
import os
import re

s = '订单号：  202103231617318548    |   202103231617318548  付款金额（元）：  1636.76 元'

# findall 在字符串中找到正则表达式所有匹配到的子串，并返回一个列表，如果没有，则返回空列表
#  \d 表示取的是数字，{18} 表示取18个数字，取出来的是个列表
res = re.findall("\d{18,22}", s)
print(res)
# res[0]表示去第一个值
print(res[0])

ll = '1536515814387064833'
ll_res = re.findall('\d{19}', ll)[0]
print(ll_res)

strtoken = '{"status":200,"msg":"success","token":"a214e6a43cd545bb8c28749e6555a09a"}'
token1 = re.findall('"token":"([\w]{32})"', strtoken)[0]
print(token1)

token2 = re.findall('"token":"(.*?)"', strtoken)[0]
print(token2)

ll = 'abcdefga'
res = re.match('a', ll)
print(res.group())

# 注意： match 和 search 是匹配一次, findall 匹配所有

# 匹配163.com的邮箱地址,$：匹配字符串结尾，163邮箱的结尾是：@163.com
email_list = ["xiaoWang@163.com", "xiaoWang@163.comheihei", ".com.xiaowang@qq.com"]
for email in email_list:
    res = re.match('[\w]{4,20}@163.com$', email)
    if res:
        print(email + "是163邮箱")
    else:
        print(email + "不是163邮箱")

aa_list = ["@163.com", "@163.comheihei", ".com.xiaowang@qq.com"]
for aa in aa_list:
    res = re.match('^@', aa)
    if res:
        print(aa + '是@开头')
    else:
        print(aa + '不是@开头')

# re.sub 将匹配到的数据进行替换，找到aa,并替换为11
sub = "aabbccdd"
sub = re.sub('[a]{2}', '11', sub)
print(sub)

# 并编写字符串来进行测试，正则表达式是否能够正确匹配邮箱，
# 最后使用正则表达式将邮箱格式替换为smtp服务器的格式
# 例如  roy@163.com 替换为smtp.163.com
a = 'roy@163.com'
# res = re.findall('[\w]{3}@',a)
# print(res)
a = re.sub('[\w]{3}@', 'smtp.', a)
print(a)

ll = '{"url":"\/public\/upload\/user\/\/head_pic\/\/af7400f46d1d069723c1a46118068651.png",' \
     '"title":"banner","original":"","state":"SUCCESS","path":"images"}'
a = re.findall(r'([{].*[}]?)',ll)
print(a)

ll = 'a1536515814387064833b'
# ^a以a开头，b$以b结尾
a = re.findall("^a\d{19}b$",ll)[0]
print(a)
b = re.findall("[a-z]\d{19}[a-z]",ll)[0]
print(b)

# 输入：2022-063-109NiuMei
# 输出：2022063109
# 1、先替换，再提取
# 2、一次性替换
a = '2022-063-109NiuMei'
# rr = re.findall(r"[-]|\D",a)
# print(rr)
res = re.sub(r"[-]|\D","",a)
print(res)

# 输出提取的仅包含数字和-的电话号码。
# 示例1，输入：123-3456-789 #NiuMei #1 cool girl
# 输出：123-3456-789

a = '123-3456-789 #NiuMei #1 cool girl123-3456-789 #NiuMei #1 cool girl123-3456-789 #NiuMei #1 cool girl'
res1 = re.findall("\d{3,4}-\d{3,4}-\d{3,4}",a)
print(res1)
# res = re.findall("[0-9|-]*",a)
# print(res)



